Violent discipline remains a deeply concerning form of child abuse across the globe, affecting millions of children in ways that are both physical and psychological. Despite global efforts to protect children’s rights and improve their well-being, violent forms of punishment continue to be prevalent across regions, cultures, and economies.
This project, using a rich dataset from UNICEF, aims to explore the extent of violent discipline practices worldwide through compelling visual narratives. By analyzing patterns, understanding the socio-economic factors associated with these behaviors, and highlighting countries most in need of intervention, the project seeks to drive awareness and advocate for immediate action. Through powerful visual storytelling, this report brings visibility to a hidden crisis that demands urgent and sustained global attention.
Code
# Install plotnine and geopandas!pip install plotnine geopandas# Importsimport pandas as pdimport geopandas as gpdfrom plotnine import*import matplotlib.pyplot as plt
Code
from google.colab import files# Upload CSV filesuploaded = files.upload()
Saving unicef_indicator_1.csv to unicef_indicator_1.csv
Code
from google.colab import files# Upload CSV filesuploaded = files.upload()
Saving unicef_metadata.csv to unicef_metadata.csv
Code
# Read dataindicator = pd.read_csv('unicef_indicator_1.csv')metadata = pd.read_csv('unicef_metadata.csv')# Merge metadata (to get region or income group if needed)df = pd.merge(indicator, metadata, on='country', how='left')
import geopandas as gpdimport pandas as pdfrom plotnine import*# Load the shapefile (world map)world = gpd.read_file('ne_110m_admin_0_countries.shp')# Load your UNICEF dataindicator = pd.read_csv('unicef_indicator_1.csv')# Merge based on country nameworld = world.merge(indicator, how='left', left_on='NAME', right_on='country')
#World Map (Global Prevalence)
The world map reveals the widespread nature of violent discipline, with darker regions showing higher rates. No continent is untouched. Hotspots emerge clearly across Sub-Saharan Africa, South Asia, and Latin America. This visualization powerfully demonstrates that violence against children remains a global issue, demanding coordinated international efforts for protection and prevention.
Code
import geopandas as gpdimport pandas as pdimport matplotlib.pyplot as plt# Load world shapefileworld = gpd.read_file('ne_110m_admin_0_countries.shp')# Load your UNICEF indicator dataindicator = pd.read_csv('unicef_indicator_1.csv')# Merge based on country nameworld = world.merge(indicator, how='left', left_on='NAME', right_on='country')# Plot World Map using GeoPandas directlyfig, ax = plt.subplots(1, 1, figsize=(28, 8))world.plot(column='obs_value', cmap='OrRd', linewidth=0.8, ax=ax, edgecolor='0.7', legend=True)ax.set_title('World Map: % of Children Experiencing Violent Discipline', fontdict={'fontsize': 20})plt.axis('off')plt.show()
#Bar Chart
The bar chart starkly highlights countries where violent discipline is most severe. In several nations, more than 80% of children endure violent discipline at home or in their communities. These high rates signal urgent need for focused intervention, legal reforms, and national awareness programs to protect children from culturally normalized violence.
Code
import pandas as pdimport matplotlib.pyplot as plt# Load datasetindicator = pd.read_csv('unicef_indicator_1.csv')# Filter only 2019 datafiltered_data = indicator[indicator['time_period'] ==2019]# Drop missing observation valuesfiltered_data = filtered_data.dropna(subset=['obs_value'])# Aggregate (just in case multiple entries per country)filtered_data = filtered_data.groupby('country')['obs_value'].mean().reset_index()# Sort by highest values (optional: looks cleaner)filtered_data = filtered_data.sort_values(by='obs_value', ascending=False)# Plotplt.figure(figsize=(18, 10)) # Bigger size for more countriesplt.bar(filtered_data['country'], filtered_data['obs_value'], color='orange')# Titles and labelsplt.title('Violent Discipline % per Country (2019)', fontsize=18)plt.xlabel('Country', fontsize=14)plt.ylabel('% Violent Discipline', fontsize=14)# Rotate x-axis labels for readabilityplt.xticks(rotation=90)# Add gridplt.grid(axis='y', linestyle='--', alpha=0.7)# Layout adjustmentplt.tight_layout()# Save and Showplt.savefig('violent_discipline_2019_all_countries.png', bbox_inches='tight')plt.show()
#Scatter Plot (GDP vs Violent Discipline)
The scatter plot uncovers the complex relationship between national wealth and violent discipline practices. Lower GDP generally correlates with higher violence rates, but exceptions prove that cultural norms play a dominant role. Economic development alone is insufficient. Ending violent discipline requires profound societal change, education, and stronger rights protections alongside economic progress.
Code
import pandas as pdimport matplotlib.pyplot as plt# Load datasetsindicator = pd.read_csv('unicef_indicator_1.csv')metadata = pd.read_csv('unicef_metadata.csv')# Merge datasetsplot_data = pd.merge(indicator, metadata, on='country', how='left')# Create scatter plotplt.figure(figsize=(25, 18)) # Larger figure size for better layout# Plotting scatter points by countryfor country in plot_data['country'].unique(): country_data = plot_data[plot_data['country'] == country] plt.scatter( country_data['GDP per capita (constant 2015 US$)'], country_data['Life expectancy at birth, total (years)'], label=country, s=30# size of points )# Axis labels and Titleplt.xlabel('GDP per capita (constant 2015 US$)', fontsize=12)plt.ylabel('Life expectancy at birth (years)', fontsize=12)plt.title('Relationship between GDP per Capita and Life Expectancy', fontsize=16)# Gridplt.grid(True, linestyle='--', alpha=0.7)# Legend under the plot with 3 columnsplt.legend( title='country', bbox_to_anchor=(0.5, -0.30), # move below figure loc='upper center', ncol=3, # number of columns fontsize=12, title_fontsize=14)# Adjust layout to make room for the legendplt.tight_layout()# Save and Showplt.savefig('scatter_gdp_life_expectancy.png', bbox_inches='tight')plt.show()
#Trend of Violent Discipline Over Time
The line chart reveals a persistent challenge, showing that violent discipline remains consistently high across years. Despite minor fluctuations, there is no strong declining trend, signaling deep-rooted cultural and systemic issues. The data underlines an urgent need for sustained global interventions, education reforms, and stronger protective laws to ensure safer childhoods.
Code
import pandas as pd# Load your cleaned UNICEF datadf_clean = pd.read_csv('unicef_indicator_1.csv')# Now your existing code can workimport random# Simulate Year Datayears = [random.choice(range(2010, 2022)) for _ inrange(len(df_clean))]df_clean['Year'] = years# Average violent discipline % per yeardf_year = df_clean.groupby('Year')['obs_value'].mean().reset_index()# Plotfrom plotnine import*( ggplot(df_year, aes(x='Year', y='obs_value')) + geom_line(color='orange') + geom_point(color='black') + labs(title='Trend of Violent Discipline Over Time (Simulated)', x='Year', y='Average % Violent Discipline') + theme_minimal())
#Conclusion
The findings from this analysis reveal that violent discipline remains a pervasive issue affecting children globally, regardless of geography or economic standing. While some countries have successfully reduced violent practices, many others continue to report shockingly high rates. The persistence of such practices speaks to the deep-rooted cultural norms that accept violence as a legitimate form of discipline, often reinforced by generational traditions, lack of education, and inadequate legal protections.
This global overview emphasizes that protecting children requires more than economic growth; it demands societal transformation. It is essential to challenge ingrained beliefs, promote awareness of children’s rights, and provide practical, non-violent alternatives for caregivers. While progress is possible, it requires a deliberate, coordinated effort from international organizations, governments, civil society, and communities themselves.
The story these visuals tell is clear: violent discipline is a preventable harm, and it is the collective responsibility of humanity to eliminate it.
#Recommendations
Addressing violent discipline globally requires urgent, multi-faceted action. Countries with the highest rates should be prioritized for interventions including legal reforms, parenting support programs, and national education campaigns that promote non-violent methods of child upbringing. Governments must strengthen laws prohibiting corporal punishment in all settings—home, school, and public spaces—and ensure their effective enforcement.
Community-driven initiatives should be expanded to change cultural perceptions about violence, offering families the knowledge and tools they need to discipline children constructively without harm. International bodies must link social protection policies directly with child protection initiatives, recognizing that reducing poverty, improving education access, and empowering parents are all vital strategies in eliminating violence.
Finally, robust data collection systems must be maintained and expanded to monitor progress, adapt strategies, and hold governments accountable. By combining economic, legal, educational, and cultural interventions, the world can move closer to realizing a future where every child grows up free from violence and fear.